﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sistema_Totem.Logica.Clases;
using Sistema_Totem.Logica.Excepciones;
using System.Data;

namespace Sistema_Totem.Vista.Minuta
{
    public partial class SeccionesAgregarMinuta : System.Web.UI.Page
    {
        int IdMiproyecto;
        List<Seccion> misSecciones = new List<Seccion>();
        protected void Page_Load(object sender, EventArgs e)
        {
            /*if (Session["tipo_usuario"].ToString() != "Gerente de Proyecto")
            {
                Response.Redirect("Login1.aspx");
            }

            if (Session["tipo_usuario"].ToString() != "Administrador")
            {
                Response.Redirect("Login1.aspx");
            }*/
            //Proyecto proy = (Proyecto)Session["objProyecto"];
            IdMiproyecto = 4;
            if (!IsPostBack)
            {
                misSecciones = ObtenerSecciones(4);
                Session.Add("misSecciones2", misSecciones);
                GridViewSecciones.DataSource = misSecciones;
                GridViewSecciones.DataBind();
            }
        }

        /// <summary>
        /// metodo encargado de consultar a la clase minuta su lista de secciones
        /// </summary>
        /// <returns>La lista de secciones de una plantilla, que este registrada para minuta</returns>
        protected List<Seccion> ObtenerSecciones(int IdProyecto)
        {
            List<Seccion> miPlantilla = new List<Seccion>();
            Minutas formatos = new Minutas();
            //cable del id del poryecto
            miPlantilla = formatos.ConsultarSeccionesMinuta(IdProyecto);
            miPlantilla = formatos.CargarElementosSeccion(miPlantilla, IdProyecto);
            return miPlantilla;
        }

        /// <summary>
        /// Metodo que hace la paginacion del gridview
        /// </summary>
        /// <param name="sender">el mismo grid</param>
        /// <param name="e"> el click sobre el icono de la pagina</param>
        protected void GridViewSecciones_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridViewSecciones.PageIndex = e.NewPageIndex;
            GridViewSecciones.DataSource = ObtenerSecciones(IdMiproyecto);
            GridViewSecciones.DataBind();
        }

        /// <summary>
        /// Metodo encargado de verificar que secciones escogio el usuario
        /// </summary>
        /// <param name="sender">nombre de la seccion</param>
        /// <param name="e">se acciona cuando se hace click en el checkBox</param>
        protected void GridViewSecciones_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// metodo encargado de pasar a la siguiente ventana las secciones 
        /// </summary>
        /// <param name="sender">se envia a la pagina agregar minuta</param>
        /// <param name="e">al hacer clik en el boton "siguiene"</param>
        protected void siguiente_Click(object sender, EventArgs e)
        {
            List<Seccion> secciones = new List<Seccion>();
            List<Seccion> seccionNuevo = new List<Seccion>();
            secciones = (List<Seccion>)Session["misSecciones2"];

            try
            {
                foreach (GridViewRow seccion in GridViewSecciones.Rows)
                {
                    CheckBox seccionCheckeada = seccion.FindControl("chkSeccion") as CheckBox;
                    if (seccionCheckeada.Checked)
                    {

                        foreach (Seccion SE in secciones)
                        {
                            if (SE.Nombre == seccion.Cells[0].Text)
                            {
                                Seccion miSeccion = new Seccion();
                                miSeccion.Nombre = SE.Nombre;
                                foreach (Elemento elemento in SE.MiListaElementos)
                                {
                                    miSeccion.MiListaElementos.Add(elemento);
                                }
                                seccionNuevo.Add(miSeccion);
                            }
                        }
                        //     miSeccion.Nombre = seccion.Cells[0].Text;
                        //     secciones.Add(miSeccion);
                    }
                }
                if (secciones.Count == 0)
                    throw (new MinutaExcepcion("Debe seleccionar una sección"));
                Session.Add("listaSeccionesPlantillaMinuta", seccionNuevo);
                Response.Redirect("../Minuta/Agregar_Minuta.aspx");
            }
            catch (Exception error)
            {
                MensajeDeTransaccion.Text = error.Message;
                MensajeDeTransaccion.CssClass = "transaccionFallida";
                MensajeDeTransaccion.Visible = true;
            }

        }

        //metodo que selecciona todos los checks de la grilla de secciones 
        protected void CheckTodo(object sender, EventArgs e)
        {
            foreach (GridViewRow fila in GridViewSecciones.Rows)
            {
                CheckBox check = (CheckBox)fila.FindControl("chkSeccion");
                check.Checked = true;
            }
        }
    }
}